import axios from 'axios'
import Vue from 'vue'
import router from '@/router'

const actionMapping = {
  'get': 'view',
  'post': 'add',
  'put': 'edit',
  'delete': 'delete'
}

axios.interceptors.request.use((req) => {
  //vue获取当前所在路由（前端的路由）router.currentRoute
  // console.log(router.currentRoute.path)
  // console.log(router.currentRoute.meta)
  //判断非权限范围内的请求,我们在路由规则的meta中存放了用户对于该路由的权限
  //在请求拦截器上，给所有请求携带上token
  req.headers.AUTHORIZATION = sessionStorage.getItem('oatoken')
  //判断当前请求的行为：get、post、put、delete
  const action = actionMapping[req.method]
  const currentRight = [router.currentRoute.meta]
  // if(currentRight && currentRight.indexOf(action)===-1){
  //   //没有权限
  //   alert('没有权限')
  //   return Promise.reject(new Error('没有权限'))
  // }
  //返回req，才能进行请求继续
  return req
})

//响应拦截器:当用户的token失效的时候,就跳转到登录界面

axios.interceptors.response.use((res) => {
  if (res.data.code === 401) {
    router.push('/login')
    //清空token
    sessionStorage.clear()
    //清空vuex中数据,刷新页面
    window.location.reload()
  }

  return res
})

Vue.prototype.$axios = axios
